#ifndef TOST_CONFIG_H
#define TOST_CONFIG_H

/*Recol Config
uzycie:
	Recol::Config::getInt()
	Recol::Config::getString() 
	wywoluja sie statyczne metodety ktore sa wrapperem dla zwyklych.
	obiekt jest singletonem, niepotrzeba przechowywac do niego wskaznika

Konstruktory:
	domyslny: ladunje plik config.cfg
	Config(char *path) laduje sprecyzowany plik

Wyjatki:
	zwraca dla nieistnienia pluku na dysku
	getInt i getStr zwracaja 0 i pusty ciag jesli niema w pamieci odpowiedniej pseudo zmiennej (do tego rzucaja wyjatek)

Do dodania i poprawy:
	aktualnei usuwa wszystkie biale znaki przy parsowaniu, to moze przeszkadzac kiedys (chociaz narazie jest calkiem praktyczne)

Schemat pliku cfg:
	;komentarz (komenotwac mozna tylko cale linie, srednik musi byc pierwszym znakiem komentarza)
	zmienna=wartosc
	dla stringow :
	zmienna="wartosc"
	biale znaki ignorowane
*/

#include <string>
#include <sstream>
#include <iostream>
#include <map>
#include <fstream>
#include <algorithm>
#include "rError.h"

namespace Tost{

	class Config{
		std::map<std::string, int> _ints;
		std::map<std::string, std::string> _strings;
		static void *_instance; 

	public:
		Config();
		Config(char *path);
		static Config* getInstance();

		void printAll(); //dla debuggowania
		static int getInt(char* index);
		static std::string getString(char* index);

	private:
		bool parseFile(char *path);
		int _getInt(char* index);
		std::string _getString(char* index);

	};
}

#endif
